class Watcher {
    constructor(vm, key, callback) {
        this.vm = vm

        //data中的属性名称
        this.key = key

        //回调函数负责更新视图
        this.callback = callback

        // 把watcher对象记录到Dep类的target静态属性中
        Dep.target = this
        this.oldValue = vm[key]
        Dep.target = null //防止重复添加
    }

    //当数据发生变化的时候更新视图
    update() {
        let newValue = this.vm[this.key]
        if (this.oldValue === newValue) {
            return
        }
        this.callback(newValue)
    }
}